﻿#include "loginwidget.h"
#include "cppfont.h"
#include "common.h"


LoginWidget::LoginWidget() {

}

void LoginWidget::show() {
    //显示登录界面的图片
    Bmp b1("./res/login.bmp");
    b1.show();


    while (1) {
        string account;
        string password;

        getInput(account, 250, 280);
        getInput(password, 250, 350);

        int x, y;
        //等待触摸屏 触摸
        TouchSreen touch;
        touch.waitTouch(x, y);

        if(x >= 165 && y >= 410 && x < 295 && y < 470) { // 点击到了 登录按钮
            string buf = "{\"type\":1,\"account\":\"" + account + "\",\"password\":\"" + password + "\"}";
            cout << "buf=" << buf << endl;
            Socket::getSocket()->sendMsg(buf);
            string result;
            Socket::getSocket()->readMsg(result);
            cout << "result=" << result << endl;

            string err;
            auto json = Json::parse(result, err);
            // json格式正确&&能查到数据
            if(err.empty() && !json["result"].array_items().empty()) {
                for (auto &k : json["result"].array_items() ) {
                    currentMember.id = atoi(k["member_id"].string_value().c_str());
                    currentMember.account = k["account"].string_value();
                    currentMember.password = k["password"].string_value();
                    currentMember.name = k["name"].string_value();
                    currentMember.sex = k["sex"].string_value() == "0" ? "man" : "woman";
                    currentMember.email = k["email"].string_value();
                    currentMember.phone = k["phone"].string_value();
                    currentMember.level = k["level"].string_value();
                    currentMember.address = k["address"].string_value();
                    break;
                }
                break;
            }
            CppFont::clearArea(250, 280, 160, 30, 0x00ffffff);
            CppFont::clearArea(250, 350, 160, 30, 0x00ffffff);
        }
    }
}

void LoginWidget::getInput(string &buf, int sx, int sy) {
    while (1) {
        int x, y;
        //等待触摸屏 触摸
        TouchSreen touch;
        touch.waitTouch(x, y);

        if(x >= 440 && x < 560 && y >= 0 && y < 120) { // 1
            buf.append("1");
        }
        if(x >= 560 && x < 680 && y >= 0 && y < 120) { // 2
            buf.append("2");
        }
        if(x >= 680 && x < 800 && y >= 0 && y < 120) { // 3
            buf.append("3");
        }
        if(x >= 440 && x < 560 && y >= 120 && y < 240) { // 4
            buf.append("4");
        }
        if(x >= 560 && x < 680 && y >= 120 && y < 240) { // 5
            buf.append("5");
        }
        if(x >= 680 && x < 800 && y >= 120 && y < 240) { // 6
            buf.append("6");
        }
        if(x >= 440 && x < 560 && y >= 240 && y < 360) { // 7
            buf.append("7");
        }
        if(x >= 560 && x < 680 && y >= 240 && y < 360) { // 8
            buf.append("8");
        }
        if(x >= 680 && x < 800 && y >= 240 && y < 360) { // 9
            buf.append("9");
        }
        if(x >= 440 && x < 560 && y >= 360 && y < 480) { // ok
            break;
        }
        if(x >= 560 && x < 680 && y >= 360 && y < 480) { // 0
            buf.append("0");
        }
        if(x >= 680 && x < 800 && y >= 360 && y < 480 && !buf.empty()) { // 删除
            buf.erase(buf.end() - 1);
        }

        if(sx != -1 && sy != -1) {
            CppFont::clearArea(sx, sy, 160, 30, 0x00ffffff);
            CppFont::displayCharacter(sx, sy, (unsigned char *)buf.c_str(), 0x00000000, 1);
        }
    }

}


